package example.cloudsitefeign.client.fallback;

import example.cloudsitefeign.client.SiteManagementClient;
import example.cloudsitefeign.dto.CommonResultDTO;
import example.cloudsitefeign.dto.SiteInfoDTO;
import org.springframework.stereotype.Component;

@Component // 将此类标记为Spring组件，以便Spring进行管理
public class SiteManagementClientFallback implements SiteManagementClient {

    @Override
    public CommonResultDTO<SiteInfoDTO> getSiteInfoById(Long id) {
        // 这是降级逻辑。
        // 当实际的服务调用失败时，此方法将被调用。
        System.out.println("为ID: " + id + " 执行 getSiteInfoById 的降级处理"); // 添加日志方便调试

        SiteInfoDTO fallbackSiteInfo = new SiteInfoDTO();
        fallbackSiteInfo.setId(id != null ? id : -1L); // 处理可能的null id
        fallbackSiteInfo.setName("降级处理：服务不可用或超时");
        fallbackSiteInfo.setAddress("N/A");
        fallbackSiteInfo.setStatus("不可用 (降级)");

        // 返回一个CommonResultDTO，指明是服务端问题（例如503服务不可用）
        // 或者如果是客户端超时导致的降级，可以是客户端错误（例如408请求超时）。
        // 为简单起见，这里使用503。
        return new CommonResultDTO<>(
                503,
                "降级处理：无法获取ID为 " + (id != null ? id.toString() : "未知") + " 的场地信息。服务可能已关闭或超时。",
                fallbackSiteInfo
        );
    }
}